<?php
/**************************************************************************************************
Class Notify 
Version:			1.0
Author				Warmy
Create Date			2006-12-20
Version:			2.0
Modify by warmy
Modify Date			2007-08-29
Copyright			peace@warmy.cn
////////////////////////////////////////////
Modify by			peace@warmy.cn
Modify Date			2009-03-04
当ob_start没有启用时，如何实现跳转到友好提示页面
**************************************************************************************************/
class Notify
{
	var $parameters;
	function Notify()
	{
		;
	}
	///////////////////////////////////////////////////////////////////////////////////////////////
	//public class
	///////////////////////////////////////////////////////////////////////////////////////////////
	/**********************************************************************************************
	Function		获取当前请求URI，
	参数			参数为可变参数，调用函数输入了参数，则过滤对应的GE值
	**********************************************************************************************/
	function parse_URI()
	{
		$REQUEST_URI		= $_SERVER["REQUEST_URI"];
		$arg_list			= func_get_args();
		$len				= count($arg_list);
		if($len > 0)
		{
			for($i=0;$i<$len;$i++)
			{
				$arg_list[$i]= "{$arg_list[$i]}=.[^&]*&?";
				$REQUEST_URI	= ereg_replace($arg_list[$i],"",$REQUEST_URI);
			}
		}
		if(strpos($REQUEST_URI,"?") == false)
			$REQUEST_URI		= "$REQUEST_URI?";
		return $REQUEST_URI;
	}
	function parse_QueryString()
	{
		$QueryString			= $_SERVER["QUERY_STRING"];


		$arg_list				= func_get_args();
		$len					= count($arg_list);
		if($len > 0)
		{
			for($i=0;$i<$len;$i++)
			{
				$arg_list[$i]= "{$arg_list[$i]}=.[^&]*&?";
				$QueryString	= ereg_replace($arg_list[$i],"",$QueryString);
			}
		}
		return $QueryString;
	}
	/**********************************************************************************************
	Function		信息提示
	parameters		$message		信息提示内容
					$iff			1 当前窗口后退	
									  跳转的指定页面
					$meta			自动跳转的指定页面
	**********************************************************************************************/
	function halt($message="",$iff=1,$meta='') 
	{
		$url					= "";
		if ($iff == 1)
		{
			$url				= "Javascript:window.history.go(-1);";
		}
		elseif($iff == "")
		{
			if(isset($_SERVER["HTTP_REFERER"]) && $_SERVER["HTTP_REFERER"] != "")
				$url			= $_SERVER["HTTP_REFERER"];
			else
				$url			= $_SERVER["REQUEST_URI"];
		}
		else
			$url				= $iff;
		if($meta == "" && $iff != 1)
		{
			$meta				= "<meta http-equiv=\"refresh\" content=\"5;URL=$url\" />";
		}
		else 
			$meta				= "<meta http-equiv=\"refresh\" content=\"5;URL=$meta\" />";
		$charset = CHARSET;
		$str = <<< EOT
		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
		<html xmlns="http://www.w3.org/1999/xhtml"> 
		<head> 
		<meta http-equiv="Content-Type" content="text/html; charset=$charset"/> 
		$meta 
		<title>message</title> 
		<link href="/css/notify.css" rel="stylesheet" type="text/css" /> 
		</head> 
		<body> 
		<div class="message"> 
		<div id="caption"> 提示信息 </div> 
		<div id="body">$message</div> 
		<div id="back">[ <a href="$url">返回</a> ]</div> 
		</div> 
		</body> 
		</html>
EOT;
echo $str;exit;


	}
	/**********************************************************************************************
	Function		保存前一页POST的数据，组合成新的表单域，供返回修改是Init使用
	**********************************************************************************************/
	function halt_Initialize_post_data()
	{
		$str = "<input type=\"text\" name=\"POST_ERROR_BACK\" value=\"1\">";
		foreach($_POST as $key=>$val)
		{
			if(is_array($val))
				$str .= "<textarea name=\"$key\"></textarea>";
			else
				$str .= "<textarea name=\"$key\">".stripslashes($val)."</textarea>";
		}
		return $str;
	}
	/**********************************************************************************************
	Function		保存变量
					$name					表单名称
					$value					表单的值
					$optional				当前表单可以为空		false		不为空
																true		可以为空
					$pattern				当前值类型
					$message				提示信息
	**********************************************************************************************/
	function get_parameter($name,$value,$optional=true,$pattern=".+",$message = "参数不能为空",$url=1)
	{
		$value = trim($value," ");
		if($optional)
			$this->parameters[$name] = $value;
		else
		{
			switch($pattern)
			{
				case "d":
					$pattern = "^[0-9]+$";
					break;
				case "i":
					$pattern = "^[\+\-]?[0-9]+$";
					break;
				case "r":
					$pattern = "^[\+\-]?[0-9]+(\.)?[0-9]?$";
					break;
				case "f":
					$pattern = "^[\+\-]?0\.[0-9]+$";
					break;
				case "l":
					$pattern = "^[a-z]+$";
					break;
				case "ul":
					$pattern = "^[A-Z]+$";
					break;
				case "ll":
					$pattern = "^[a-z]+$";
					break;
				case "w":
					$pattern = "^[0-9a-zA-Z_]+$";
					break;
				case "S":
					$pattern = "[^a-zA-Z0-9\n\r\t\f\v~`!@#$%^&*()\_\+\\/\.,<>\? ]+$";
					break;
				case "e":
					$pattern = "([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+";
					break;
				case "date":
					$pattern = "^[0-9]{4}\-(0?[1-9]|[1-2][0-2])\-(0?[1-9]|[1-2][0-9]|3[01])$";
					break;
			}
			if (ereg($pattern,$value))
				$this->parameters[$name] = $value;
			else
			{
				$this->halt($message,$url);
			}
		}
	}
	//
	
}
?>